﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace PartyManagement.Models
{
    //public class Role
    //{
    //    public int roleID { get; set; }

    //    [Display(Name = "Quyền")]
    //    [Required(ErrorMessage = "Tên quyền không được để trống")]
    //    public string roleName { get; set; }

    //    public virtual ICollection<User> Users { get; set; }
    //}

    //public class User
    //{
    //    public int userID { get; set; }
    //    [Display(Name = "Username")]
    //    [Required(ErrorMessage = "Username không được để trống")]
    //    [MinLength(5, ErrorMessage = "Username tối thiểu {0} kí tự")]
    //    [MaxLength(32, ErrorMessage = "Username chỉ tối đa {0} kí tự")]
    //    public string userName { get; set; }

    //    [Display(Name = "Mật khẩu")]
    //    [Required(ErrorMessage = "Mật khẩu không được để trống")]
    //    [MinLength(8, ErrorMessage = "Mật khẩu tối thiểu {0} kí tự")]
    //    [MaxLength(32, ErrorMessage = "Mật khẩu chỉ tối đa {0} kí tự")]
    //    public string password { get; set; }

    //    public int roleID { get; set; }

    //    public virtual Role Role { get; set; }

    //    public virtual ICollection<Event> Events { get; set; }
    //    public virtual ICollection<Attend> Attends { get; set; }
    //    public virtual ICollection<UserInGroup> UserInGroups { get; set; }
    //}

    public class Group
    {
        public int groupID { get; set; }

        [Display(Name = "Tên nhóm")]
        [Required(ErrorMessage = "Tên nhóm không được để trống")]
        [MinLength(5, ErrorMessage = "Tên nhóm tối thiểu {0} kí tự")]
        [MaxLength(20, ErrorMessage = "Tên nhóm chỉ tối đa {0} kí tự")]
        public string groupName { get; set; }

        public int userID { get; set; }

        //public virtual User User { get; set; }

        public virtual ICollection<UserInGroup> UserInGroups { get; set; }
    }

    public class UserInGroup
    {
        [Key]
        public int userInGroupID { get; set; }

        public int userID { get; set; }
        public int groupID { get; set; }

       // public virtual User User { get; set; }
        public virtual Group Group { get; set; }
    }

    public class FoodCategory
    {
        public int foodCategoryID { get; set; }

        [Display(Name = "Tên loại món ăn")]
        [Required(ErrorMessage = "Tên loại món ăn không được để trống")]
        public string foodCategoryName { get; set; }

        public virtual ICollection<Food> Foods { get; set; }
    }

    public class Food
    {
        public int foodID { get; set; }

        [Display(Name = "Tên món ăn")]
        [Required(ErrorMessage = "Tên món ăn không được để trống")]
        public string foodName { get; set; }
        public bool isAvailable { get; set; }
        public int quantity { get; set; }

        public int foodCategoryID { get; set; }

        public virtual FoodCategory FoodCategory { get; set; }

        public virtual ICollection<FoodInMenu> FoodInMenus { get; set; }
    }

    public class Menu
    {
        public int menuID { get; set; }

        [Display(Name = "Tên Menu")]
        [Required(ErrorMessage = "Tên Menu không được để trống")]
        public int menuName { get; set; }

        public virtual ICollection<FoodInMenu> FoodInMenus { get; set; }
    }

    public class FoodInMenu
    {
        [Key]
        public int foodInMenuID { get; set; }
        public int foodID { get; set; }
        public int menuID { get; set; }

        public virtual Food Food { get; set; }
        public virtual Menu Menu { get; set; }
    }

    public class Event
    {
        public int eventID { get; set; }

        [Display(Name = "Sự kiện")]
        [Required(ErrorMessage = "Tên sự kiện không được để trống")]
        public string eventName { get; set; }
        public DateTime dateEvent { get; set; }
        public DateTime endDateBook { get; set; }

        public int userID { get; set; }
        //public virtual User User { get; set; }

        public int menuID { get; set; }
        public virtual Menu Menu { get; set; }

        public virtual ICollection<Attend> Attends { get; set; }
    }

    public class Attend
    {
        [Key]
        public int attendID { get; set; }
        public int eventID { get; set; }

        public int userID { get; set; }

        public virtual Event Event { get; set; }

        //public virtual User User { get; set; }
    }
}